package br.com.classificadosonline.persistencia;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.classificadosonline.nucleo.Endereco;

public class EnderecoDAO {

	private static final EnderecoDAO instance = null;

	public static EnderecoDAO getInstance()
	{
		if (instance == null)
		{
			instance = new EnderecoDAO();
		}
		return instance;
	}

	public static EnderecoDAO obterInstancia() {
		return (EnderecoDAO) Conexao.select("SELECT * FROM ENDERECO");
	}
	
	public static void cadastrarEndereco(String logradouro, String bairro, String cidade, String uf, String pais, int numero, String complemento, String CEP) {
		Conexao.update("INSERT INTO ENDERECO VALUES ('" + logradouro + "', '" + bairro + "', '" + cidade + "', '" + uf + "', '" + pais + "', " + numero + ", '" + complemento + "', '" + CEP + "')");
	}
	
	public static void modificarEndereco(int codigo, String logradouro, String bairro, String cidade, String uf, String pais, int numero, String complemento, String CEP) {
		Conexao.update("UPDATE ENDERECO SET LOGRADOURO='" + logradouro + "', BAIRRO='" + bairro + "', UF='" + uf + "', PAIS='" + pais + "', NUMERO=" + numero + ", COMPLEMENTO='" + complemento + "', CEP='" + CEP + "' WHERE CODIGO=" + codigo);
	}	
	
	public static Endereco buscarEndereco(int codigo) {
		return buscar("SELECT * FROM ENDERECO WHERE CODIGO=" + codigo).get(0);
	}
	
	public static Endereco buscarEnderecoPorCepPorNumeroPorComplemento(String cep, int numero, String complemento) {
		return buscar("SELECT * FROM ENDERECO WHERE CEP='" + cep +"' AND NUMERO=" + numero + " AND COMPLEMENTO='" + complemento + "'").get(0);
	}
	
	public static List<Endereco> buscar(String query) {
		ResultSet rs = null;
		List<Endereco> lista = new ArrayList<Endereco>();
		Endereco endereco = null;	
		Statement stmt;
		try {
			stmt = Conexao.conexao().createStatement();							
			rs = stmt.executeQuery(query);
			while (rs.next()) {
				endereco = new Endereco(rs.getInt("CODIGO"), rs.getString("LOGRADOURO"), rs.getString("BAIRRO"), rs.getString("CIDADE"), rs.getString("UF"), rs.getString("PAIS"), rs.getInt("NUMERO"), rs.getString("COMPLEMENTO"), rs.getString("CEP"));
				lista.add(endereco);
			}
			stmt.close();
			Conexao.conexao().close();	
		} catch (SQLException e) {
		}
		return lista;
	}
	
	public static List<Endereco> listarEndereco() {
		return buscar("SELECT * FROM ENDERECO");
	}
	
	public static void excluirEndereco(int codigo) {
		Conexao.update("DELETE FROM ENDERECO WHERE CODIGO=" + codigo);
	}	
}
